<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Carrinho extends CMS_Controller {

    private $v_dados;

    function __construct() {
        parent::__construct();
        //echo $this->session->userdata('idioma');
        $this->v_dados = array();

        $this->load->library('session');
        $this->load->library('manuela');

        $this->load->helper('html');
        $this->load->helper('strings_helper');

        // CARREGAR LINGUA
        $this->load->language('manuela/menu_site', $this->session->userdata('idioma'));
        $this->load->language('manuela/carrinho', $this->session->userdata('idioma'));

        $this->load->model('carrinho_compra_model');
        $this->load->model('pedido_model');
        $this->load->model('pedido_itens_model');
        $this->load->model('pedido_dados_entrega_model');
        $this->load->model('local_pais_model');
        $this->load->model('pagamentos_model');

        $this->load->add_module('ecommerce');
        //$this->load->language('ecommerce/produtos_categorias');
        $this->load->config('ecommerce/parametros');
        $this->load->config('manuela');
        $this->load->model('ecommerce/produtos_model');
        $this->load->model('ecommerce/produtos_estoque_model');
        $this->load->model('ecommerce/produtos_opcional_valor_model');
        $this->load->model('ecommerce/produtos_has_imagens_model');

        $this->load->add_module('settings');
        $this->load->config('settings/parametros');
        $this->load->model('settings/settings_model');

        $this->load->add_module('pessoa');
        $this->load->config('pessoa/parametros');
        $this->load->model('pessoa/pessoa_model');

        $this->v_dados = $this->manuela->menu_categoria();
        $this->v_dados['lang_politica'] = '';
    }

    public function index($_id, $_quantidade = null) {
        $this->load->library('form_validation');
        $this->form_validation->set_rules('quantidade', 'quantidade', 'trim|required|is_natural_no_zero');

        $sessao = $this->session->userdata('carrinho');

        if ($sessao == false) {
            $sessao = md5(uniqid(rand(), true));
            $this->session->set_userdata('carrinho', $sessao);
        }

        $this->v_dados['itens'] = array();
        $total = 0;


        $this->v_dados['paises'] = '';
        $this->v_dados['frete_valor'] = '';
        $this->v_dados['total_valor'] = '';
        $this->v_dados['lang_estoque_vazio'] = '';

        if ($this->form_validation->run($this) === TRUE) {
            $_quantidade = $this->input->post('quantidade');
        } else if ($_quantidade != null && $_quantidade > 0) {
            $qtdCarrinho = $this->carrinho_compra_model->get_quantidade($sessao, $_id) + $_quantidade;
            $b_estoque = $this->produtos_estoque_model->consultar($_id, $this->config->item('loja_ativa'));
            //pre($qtdCarrinho);
            //pre($b_estoque);
            if ($b_estoque->quantidade < $qtdCarrinho) {
                $_quantidade = 0;
                $this->v_dados['lang_estoque_vazio'] = $this->lang->line('lang_estoque');
            }
        }

        $dados = array();
        $dados['ec_produtos_id'] = $_id;
        $dados['sessao'] = $sessao;
        $dados['quantidade'] = 1;
        $dados['ip'] = $this->input->ip_address();

        if ($_quantidade != null) {
            for ($i = 0; $i < $_quantidade; $i++) {
                $this->carrinho_compra_model->cadastrar($dados);
            }
        }

        $b_consultar = $this->carrinho_compra_model->get_sessao($sessao, $this->config->item('loja_ativa'));
        if ($b_consultar != null) {
            foreach ($b_consultar as $key => $value) {
                $this->v_dados['itens'][$key]['id'] = $value->carrinho_id;
                $this->v_dados['itens'][$key]['id_prod'] = $value->id;
                $this->v_dados['itens'][$key]['produto'] = $value->titulo;
                $this->v_dados['itens'][$key]['quantidade'] = $value->qtd_carrido;
                $this->v_dados['itens'][$key]['valor'] = $value->valor_venda;
                $this->v_dados['itens'][$key]['max'] = $value->quantidade;
                $this->v_dados['itens'][$key]['acao'] = $this->lang->line('lang_acao');
                $this->v_dados['itens'][$key]['indice'] = $key;

                $b_produto = $this->produtos_opcional_valor_model->consultar_produto($value->id);
                if ($b_produto != null) {
                    $nome = '';
                    //pre($b_produto);
                    foreach ($b_produto as $k => $v) {
                        $nome = $nome . ' - ' . $v->caracteristica . ' ' . $v->nome;
                    }
                    $this->v_dados['itens'][$key]['produto'] = $value->titulo . $nome;
                }

                $total += $value->valor_venda;
            }
        }



        $b_paises = $this->local_pais_model->consultar_total();
        $pais = '';
        //pre($b_paises);

        if ($b_paises != null) {
            foreach ($b_paises as $key => $value) {
                $paises = array();
                $paises['name'] = 'pais';
                $paises['id'] = $value->id;
                $paises['value'] = $value->id;
                $paises['checked'] = TRUE;
                $paises['required'] = "required";
                $pais = $pais . form_radio($paises) . form_label($value->nome);
            }
        }

        $this->v_dados['paises'] = $pais;
        $this->v_dados['frete_valor'] = '0,00';
        $this->v_dados['total_valor'] = $total;



        $this->v_dados = $this->lang->multi_line($this->v_dados);
        $this->parser->parse_site('orcamento_view', $this->v_dados);
    }

    public function remover($_id) {
        $this->carrinho_compra_model->excluir($_id);
        $this->index(0);
    }

    public function fechar_pedido($_interno = false) {
        if ($this->input->post('contrato') == 1 || $_interno == true) {
            if ($this->input->post('contrato') == 1) {
                $this->_limpar_campos();
            }
            $sessao = $this->session->userdata('carrinho');

            if ($sessao == false) {
                $this->v_dados['lang_politica'] = $this->lang->line('lang_vazio');
                $this->index(0);
            }
            $this->v_dados = $this->lang->multi_line($this->v_dados);
            $this->v_dados['itens'] = array();
            $produtos = $this->carrinho_compra_model->get_sessao($sessao, $this->config->item('loja_ativa'));
            $qualidade = $this->settings_model->get_valor("qualidade_img");
            $entrega = 0;
            $parcela = 1;
            $valor = 0;
            if ($produtos != false) {
                foreach ($produtos as $k => $v) {
                    //pegar o prazo de entrega maior assim como a quantidade de parcelas
                    $b_produto = $this->produtos_model->consultar($v->id);
                    if ($b_produto != null) {
                        if ($b_produto[0]->max_parcelas > $parcela) {
                            $parcela = $b_produto[0]->max_parcelas;
                        }
                        if ($b_produto[0]->prazo_entrega > $entrega) {
                            $entrega = $b_produto[0]->prazo_entrega;
                        }
                    }

                    $b_imagem = $this->produtos_has_imagens_model->consultar_imagens($v->id, 1);
                    if ($b_imagem != null) {
                        $this->v_dados['itens'][$k]['imagem'] = base_url() . "imagens/cms/img/thumb/" . $b_imagem[0]->id . "/" . $qualidade . "/65";
                    } else {
                        $this->v_dados['itens'][$k]['imagem'] = base_url() . "imagens/cms/img/thumb/0/" . $qualidade . "/65";
                    }
                    $this->v_dados['itens'][$k]['produto'] = $v->titulo;
                    $this->v_dados['itens'][$k]['quantidade'] = $v->qtd_carrido;
                    $this->v_dados['itens'][$k]['valor'] = formataString(array('entrada' => $v->valor_venda, 'formato' => 'moedaView', 'casas' => 2));
                    $valor = $valor + $v->valor_venda;
                }

                $parcelamento = array();
                for ($i = 1; $i <= $parcela; $i++) {
                    $parcelamento[$i] = $i . ' x R$ ' . formataString(array('entrada' => ($valor / $i), 'formato' => 'moedaView', 'casas' => 2));
                }
                //PARA SUA REGIÃO A ESTIMATIVA DE ENTREGA É DE %D DIAS ÚTEIS
                $this->v_dados['lang_estimativa'] = str_replace('%D', $entrega, $this->v_dados['lang_estimativa']);

                $this->v_dados['parcela'] = form_dropdown('parcelas', $parcelamento, array());

                $formas_pgtos = array();
                $b_pagamentos = $this->pagamentos_model->consultar_total($this->input->post('pais'));

                if ($b_pagamentos != null) {
                    foreach ($b_pagamentos as $value) {
                        $formas_pgtos[$value->id] = $value->nome;
                    }
                }
                $this->v_dados['forma_pagamentos'] = form_dropdown('pagamentos', $formas_pgtos, array());

                $this->v_dados['pais'] = $this->input->post('pais');

                $this->parser->parse_site('orcamento_pagamento_view', $this->v_dados);
            } else {
                $this->v_dados['lang_politica'] = $this->lang->line('lang_vazio');
                $this->index(0);
            }
        } else {
            $this->v_dados['lang_politica'] = $this->lang->line('lang_contrato');
            $this->index(0);
        }
    }

    public function pagamento() {
        /* FALTA VALIDAR OS CAMPOS NA VIEW, COLOCAR MÁSCARAS E FORMATAR A DATA DE NASCIMENTO */
        $sessao = $this->session->userdata('carrinho');
        $this->v_dados = $this->lang->multi_line($this->v_dados);
        $this->v_dados['lang_numero_pedido'] = '';
        if ($sessao == false) {
            $this->v_dados['lang_politica'] = $this->lang->line('lang_vazio');
            $this->index(0);
        }

        $this->load->library('form_validation');
        $this->form_validation->set_rules('email', 'email', 'trim|required');
        $this->form_validation->set_rules('telefone', 'telefone', 'trim|required');
        $this->form_validation->set_rules('nome', 'nome', 'trim|required');
        $this->form_validation->set_rules('nascimento', 'nascimento', 'trim|required');
        $this->form_validation->set_rules('cpf', 'cpf', 'trim|required');
        $this->form_validation->set_rules('paises', 'paises', 'trim|required');
        $this->form_validation->set_rules('cep', 'cep', 'trim|required');
        $this->form_validation->set_rules('endereco', 'endereco', 'trim|required');
        $this->form_validation->set_rules('logradouro', 'logradouro', 'trim|required');
        $this->form_validation->set_rules('cidade', 'cidade', 'trim|required');
        $this->form_validation->set_rules('bairro', 'bairro', 'trim|required');
        $this->form_validation->set_rules('UF', 'UF', 'trim|required');
        $this->_limpar_campos();

        if ($this->form_validation->run($this) === FALSE) {
            //pre('nao passou no form validation');
            $this->v_dados['email'] = $this->input->post('email');
            $this->v_dados['telefone'] = $this->input->post('telefone');
            $this->v_dados['nome'] = $this->input->post('nome');
            $this->v_dados['nascimento'] = $this->input->post('nascimento');
            $this->v_dados['cpf'] = $this->input->post('cpf');
            $this->v_dados['bra'] = 'selected=selected';
            $this->v_dados['cep'] = $this->input->post('cep');
            $this->v_dados['endereco'] = $this->input->post('endereco');
            $this->v_dados['complemento'] = $this->input->post('complemento');
            $this->v_dados['mensagem'] = $this->input->post('mensagem');
            $this->v_dados[$this->input->post('UF')] = 'selected=selected';
            $this->fechar_pedido(true);
        } else {
            $cpf = $this->input->post('cpf');
            $email = $this->input->post('email');
            if (validaCpf($cpf) == false) {
                pre('CPF/CNPJ invalido');
                $this->v_dados['email'] = $this->input->post('email');
                $this->v_dados['telefone'] = $this->input->post('telefone');
                $this->v_dados['nome'] = $this->input->post('nome');
                $this->v_dados['nascimento'] = $this->input->post('nascimento');
                $this->v_dados['cpf'] = $this->input->post('cpf');
                $this->v_dados['bra'] = 'selected=selected';
                $this->v_dados['cep'] = $this->input->post('cep');
                $this->v_dados['endereco'] = $this->input->post('endereco');
                $this->v_dados['logradouro'] = $this->input->post('logradouro');
                $this->v_dados['cidade'] = $this->input->post('cidade');
                $this->v_dados['complemento'] = $this->input->post('complemento');
                $this->v_dados['mensagem'] = $this->input->post('mensagem');
                $this->v_dados['numero'] = $this->input->post('numero');
                $this->v_dados['bairro'] = $this->input->post('bairro');
                $this->v_dados[$this->input->post('UF')] = 'selected=selected';
                //pre($this->v_dados);
                $this->fechar_pedido(true);
            } else {

                $b_contato = $this->pessoa_model->get_email($email, '');
                $id = '';
                if ($b_contato == null) {
                    $endereco = array();
                    $pessoa = array();
                    $pessoa['status_id'] = '5';
                    $pessoa['nome'] = $this->input->post('nome');

                    $id = $this->pessoa_model->cadastrar($pessoa);

                    if ($id != null) {
                        $fisica = array();
                        $fisica['pessoa_id'] = $id;
                        $fisica['cpf'] = $cpf;
                        $fisica['data_nascimento'] = $this->input->post('nascimento');

                        $this->pessoa_model->cadastrar_p_fisica($fisica);

                        $contato = array();
                        $contato['pessoa_id'] = $id;
                        $contato['email'] = $email;
                        $contato['telefone'] = $this->input->post('telefone');

                        $this->pessoa_model->cadastrar_p_contato($contato);


                        $endereco['pessoa_endereco_tipo_id'] = '1';
                        $endereco['pessoa_id'] = $id;
                        $endereco['cep'] = $this->input->post('cep');
                        $endereco['logradouro'] = $this->input->post('logradouro');
                        $endereco['endereco'] = $this->input->post('endereco');
                        $endereco['numero'] = $this->input->post('numero');
                        $endereco['bairro'] = $this->input->post('bairro');
                        $endereco['cidade'] = $this->input->post('cidade');
                        $endereco['complemento'] = $this->input->post('complemento');
                        $endereco['estado'] = $this->input->post('UF');
                        $endereco['pais'] = $this->input->post('paises');

                        $this->pessoa_model->cadastrar_p_endereco($endereco);
                    }
                } else {
                    $id = $b_contato[0]->pessoa_id;
                    $pessoa = array();
                    $pessoa['status_id'] = '5';
                    $pessoa['nome'] = $this->input->post('nome');

                    $this->pessoa_model->alterar($pessoa, $id);

                    $fisica = array();
                    //$fisica['pessoa_id'] = $id;
                    $fisica['cpf'] = $cpf;
                    $fisica['data_nascimento'] = formatarData($this->input->post('nascimento'), array('formato' => 'd/m/Y'));

                    $this->pessoa_model->alterar_p_fisica($fisica, $id);

                    $contato = array();
                    //$contato['pessoa_id'] = $id;
                    $contato['email'] = $email;
                    $contato['telefone'] = $this->input->post('telefone');

                    $this->pessoa_model->alterar_p_contato($contato, $id);

                    //$endereco['pessoa_endereco_tipo_id'] = '1';
                    //$endereco['pessoa_id'] = $id;
                    $endereco['cep'] = $this->input->post('cep');
                    $endereco['logradouro'] = $this->input->post('logradouro');
                    $endereco['endereco'] = $this->input->post('endereco');
                    $endereco['numero'] = $this->input->post('numero');
                    $endereco['bairro'] = $this->input->post('bairro');
                    $endereco['cidade'] = $this->input->post('cidade');
                    $endereco['complemento'] = $this->input->post('complemento');
                    $endereco['estado'] = $this->input->post('UF');
                    $endereco['pais'] = $this->input->post('paises');

                    $this->pessoa_model->alterar_p_endereco($endereco, $id, '1');
                }
                $valor = 0;
                $b_produtos = $this->carrinho_compra_model->get_sessao($sessao, $this->config->item('loja_ativa'));
                if ($b_produtos != null) {
                    foreach ($b_produtos as $value) {
                        $valor = $valor + $value->valor_venda;
                    }

                    $pedido = array();
                    $pedido['ec_pedidos_status_id'] = '1';
                    $pedido['ec_frete_id'] = '1'; //PEGAR FRETE DO BANCO
                    $pedido['ec_pagamentos_id'] = $this->input->post('pagamentos'); //VERIFICAR QUAIS SAO ESSES PARCELAMENTOS
                    $pedido['pessoa_id'] = $id;
                    $pedido['local_pais_id'] = $this->input->post('pais'); //PEGAR O ID DO PAIS NO BANCO
                    $pedido['parcelas'] = $this->input->post('parcelas');
                    $pedido['pedido_total'] = $valor;
                    $pedido['observacoes'] = $this->input->post('mensagem');

                    $id = $this->pedido_model->cadastrar($pedido);

                    if ($id != null) {
                        $itens = array();
                        foreach ($b_produtos as $value) {
                            $itens['ec_produtos_loja_id'] = $this->config->item('loja_ativa');
                            $itens['ec_pedidos_id'] = $id;
                            $itens['ec_produtos_id'] = $value->id;
                            $itens['codigo_referencia'] = $value->codigo_referencia;
                            $itens['titulo'] = $value->titulo;
                            $itens['quantidade'] = $value->qtd_carrido;
                            $itens['valor'] = $value->valor_venda;
                            $this->pedido_itens_model->cadastrar($itens);


                            //$estoque = array();
                            //$estoque['quantidade'] = "quantidade - " . $value->qtd_carrido;
                            //$this->produtos_estoque_model->atualizar_estoque($value->id, $this->config->item('loja_ativa'), $estoque);
                            $this->produtos_estoque_model->atualizar_estoque($value->id, $this->config->item('loja_ativa'), $value->qtd_carrido);
                        }

                        $dados_entrega = array();
                        $dados_entrega['ec_pedidos_id'] = $id;
                        $dados_entrega['nome'] = $this->input->post('nome');
                        $dados_entrega['cep'] = $endereco['cep'];
                        $dados_entrega['logradouro'] = $endereco['logradouro'];
                        $dados_entrega['endereco'] = $endereco['endereco'] . ' ' . $endereco['numero'];
                        $dados_entrega['complemento'] = $endereco['complemento'];
                        $dados_entrega['cidade'] = $endereco['cidade'];
                        $dados_entrega['estado'] = $endereco['estado'];
                        $dados_entrega['pais'] = $endereco['pais'];
                        $this->pedido_dados_entrega_model->cadastrar($dados_entrega);
                        //pre('aqui');
                        $pedido = $this->pedido_model->consultar_pedido($id);
                        if ($pedido != null) {
                            $formato = array();
                            $formato['formato'] = 'limpar';
                            $data = formatarData($pedido->data, $formato);
                            $this->v_dados['lang_numero_pedido'] = str_replace('%NUMERO', $data . $id . '-' . $pedido->codigo, $this->lang->line('lang_pedido'));
                            $formato['formato'] = 'texto';
                            $this->v_dados['lang_numero_pedido'] = str_replace('%DATA', formatarData($pedido->data, $formato), $this->v_dados['lang_numero_pedido']);
                        }
                    }

                    $this->carrinho_compra_model->limpar_carrinho($sessao);
                }
                $this->parser->parse_site('orcamento_sucesso_view', $this->v_dados);
            }
        }
    }

    private function _limpar_campos() {
        $this->v_dados['email'] = '';
        $this->v_dados['telefone'] = '';
        $this->v_dados['nome'] = '';
        $this->v_dados['nascimento'] = '';
        $this->v_dados['cpf'] = '';
        $this->v_dados['bra'] = '';
        $this->v_dados['cep'] = '';
        $this->v_dados['logradouro'] = '';
        $this->v_dados['cidade'] = '';
        $this->v_dados['endereco'] = '';
        $this->v_dados['complemento'] = '';
        $this->v_dados['mensagem'] = '';
        $this->v_dados['numero'] = '';
        $this->v_dados['bairro'] = '';
        $this->v_dados['ac'] = '';
        $this->v_dados['al'] = '';
        $this->v_dados['ap'] = '';
        $this->v_dados['am'] = '';
        $this->v_dados['ba'] = '';
        $this->v_dados['ce'] = '';
        $this->v_dados['df'] = '';
        $this->v_dados['es'] = '';
        $this->v_dados['go'] = '';
        $this->v_dados['ma'] = '';
        $this->v_dados['ms'] = '';
        $this->v_dados['mt'] = '';
        $this->v_dados['mg'] = '';
        $this->v_dados['pa'] = '';
        $this->v_dados['pb'] = '';
        $this->v_dados['pr'] = '';
        $this->v_dados['pe'] = '';
        $this->v_dados['pi'] = '';
        $this->v_dados['rj'] = '';
        $this->v_dados['rn'] = '';
        $this->v_dados['rs'] = '';
        $this->v_dados['ro'] = '';
        $this->v_dados['rr'] = '';
        $this->v_dados['sc'] = '';
        $this->v_dados['sp'] = '';
        $this->v_dados['se'] = '';
        $this->v_dados['to'] = '';
    }

}